package com.dzjcloud.dzj.common.minio.utils;

import com.dzjcloud.dzj.common.minio.constant.FileConstants;
import lombok.experimental.UtilityClass;

/**
 * <h3>pig</h3>
 * <p>文件大小判断工具类</p>
 *
 * @author : DongZeJian
 * @date : 2020-12-31 15:58
 **/
@UtilityClass
public class FileCheckUtils {

	/**
	 * 判断文件大小
	 *
	 * @param len  上传文件大小
	 * @param size 限制大小
	 * @param unit 限制单位（B,K,M,G）
	 * @return 符合满足条件返回true、否则返回false
	 */
	public Boolean checkFileSize(Long len, int size, String unit) {
		double fileSize = 0;
		if (FileConstants.FILE_SIZE_B.equals(unit.toUpperCase())) {
			fileSize = (double) len;
		} else if (FileConstants.FILE_SIZE_K.equals(unit.toUpperCase())) {
			fileSize = (double) len / 1024;
		} else if (FileConstants.FILE_SIZE_M.equals(unit.toUpperCase())) {
			fileSize = (double) len / 1048576;
		} else if (FileConstants.FILE_SIZE_G.equals(unit.toUpperCase())) {
			fileSize = (double) len / 1073741824;
		}
		if (fileSize > size) {
			return Boolean.FALSE;
		}
		return Boolean.TRUE;
	}

	/**
	 * 根据文件大小计算对应单位
	 *
	 * @param len : 文件大小
	 * @return 返回对应单位
	 */
	public String getFileSizeToM(Long len, String unit) {
		double fileSize = 0;
		if (FileConstants.FILE_SIZE_B.equals(unit.toUpperCase())) {
			fileSize = (double) len;
			return fileSize + FileConstants.FILE_SIZE_B;
		} else if (FileConstants.FILE_SIZE_K.equals(unit.toUpperCase())) {
			fileSize = (double) len / 1024;
			return fileSize + FileConstants.FILE_SIZE_K;
		} else if (FileConstants.FILE_SIZE_M.equals(unit.toUpperCase())) {
			fileSize = (double) len / 1048576;
			return fileSize + FileConstants.FILE_SIZE_M;
		} else if (FileConstants.FILE_SIZE_G.equals(unit.toUpperCase())) {
			fileSize = (double) len / 1073741824;
			return fileSize + FileConstants.FILE_SIZE_G;
		}
		return "0";
	}


}
